Apache CassandraとAmazon DynamoDBの比較
2012/1/23 updated
Apache Cassandraとは?
Apache Cassandraは、2007年にAmazonによって発表されたDynamoに関する論文からインスパイアされて開発されたNoSQL分散データベースです。2008年にFacebook社によりオープンソースとして公開されました。スケーラビリティと高可用性を求めている方には適しています。線形の拡張性とフォールトトレラントを備えていて、クラウドやオンプレミス上で構築することができ、ミッションクリティカルなデータを保管することができます。Cassandraは、複数のデータセンターでの稼働をサポートしていて、低いレイテンシーでやり取りを行う事が出来ます。万が一の災害時にも安心です。
Amazon DynamoDBとは?
Amazon DynamoDBは、シームレスに拡張ができ、高速で予測可能なパフォーマンスを提供する、フルマネージドのNoSQL(非RDBMS)です。これは、データベース管理、パフォーマンス、スケーラビリティ、および信頼性のコアな問題に対処するために設計されています。高可用性データベースのスケーリングとオペレーションの管理負担を軽減します。特徴として、データはSSD上に保管されるため高速に読み書きすることができます。また、3つのアベイラビリティゾーンに自動的に分散されます。さらに、IOPS(Input Output Per Second)を指定することができます。既にAmazon.comの買い物カゴにも使われているようです。
CassandraとDynamoDBの比較表
CassandraとDynamoDBの違いについて一覧で比較します。
Apache Cassandra | Amazon DynamoDB | |
視点 | プロダクト | サービス |
---|---|---|
最大オブジェクトサイズ | 2GB | 64KB |
一貫性のチューニング | 多数 | いくつか |
バッチ書き込み | あり | あり |
条件付きアップデート | なし | あり |
TTLサポート | あり | なし |
キーとカラムのデータモデル | あり | あり |
カラム値のインデックス | あり | なし |
Hadoopインテグレーション | M/R, Hive, Pig | M/R, Hive |
複合キーサポート | あり | あり |
複数データセンターサポート | 複数のリージョン(地域) | 複数のアベイラビリティゾーン(データセンター) |
キャッシュの仕組み | あり | 不明 |
市販品のDiskによる高パフォーマンス | あり | なし |
IOPS指定(読み書き速度指定) | なし | あり |
モニタリング | あり | あり |
バックアップ | 影響度の低いインクリメンタルなスナップショット | EMRを用いたS3へのバックアップ操作 |
デプロイ先 | どこでも | AWS上 |
環境構築 | 自分で | 不要 |
保守メンテナンス | 自分で | 不要 |
運用管理 | 自分で | 不要 |
スケール方法 | ノード数を増やす | IOPS指定 |
※Cassandraの構築運用サービス会社もありますが、当然別コストが掛かってきます。
どっちがいいの?
なかなか難しい判断だと思いますw。Cassandraは、オープンソースですし、どこでも動くので、社内サーバー群の中に置いて自前運用してもいいですし、クラウド上に置いても使えます。一方で、DynamoDBは、Amazonが全て管理/メンテナンスしていますので、インフラのことを気にせずに使えますし、IOPS指定もできてしまいます。Cassandraの利用者いわく、1$あたりのデータI/Oは、Cassandraが勝っているようですが、管理コストを考慮するとDynamoDBも負けてはいません。さらに、Cassandraを使ったスケールアウトやチューニングのできるエンジニアを探すのは最も困難です。CassandraはDynamoを参考にして作られているということで、両者の起源は同じですが、オープンソースのCassandraの機能追加のスピードは著しいものがあります。一方で、そんなに機能追加されて誰が使いこなすのかwという問題もあります。
まとめ
Apache CassandraとAmazon DynamoDBについて比較表を用いてご紹介しました。この比較表は、Cassandra関連のコミュニティに書いてあった内容ですので、多少Cassandra寄りかもしれませんが、メジャーな製品との比較はとても参考になりますね。NoSQLなデータベースは、データストア周りのパフォーマンスを求めるデベロッパーにとって有力な選択肢になってきたことは間違いありません。レスポンスタイムがビジネスに直結する昨今、ぜひCassandraやDynamoDBを使って、その高いパフォーマンスを体験してみましょう!今日から君もダイナもん!
参考資料
Here’s a summary of how DynamoDB compares to Cassandra:
Benchmarking Cassandra Scalability on AWS - Over a million writes per second